#!/bin/sh
# ====================================================================
# FRP 客户端管理脚本
# 功能：启动、停止和重启 FRP 客户端（frpc）
# FRP（Fast Reverse Proxy）是一个高性能的反向代理应用，用于实现内网穿透
# ====================================================================

# 条件判断：如果第一个参数是 "stop" 或 "restart"
# - $1 表示脚本的第一个命令行参数
# - = 表示等于比较
# - -o 表示逻辑或（OR）
if [ "$1" = "stop" -o "$1" = "restart" ]
# then 关键字标记条件成立后要执行的代码块开始
# 当条件成立时（执行停止或重启操作），先停止现有的 frp 进程
then                                                                             
    # 输出停止操作的提示信息到控制台
    echo "Stopping the frp "
    
    # 使用 pkill 命令查找并终止匹配特定模式的进程
    # -f 参数表示使用完整的命令行字符串进行匹配
    # "/media/mmcblk0p1/frp/frpc" 是要匹配的进程命令行模式
    # 这会终止所有命令行中包含该路径的进程
    pkill -f "/media/mmcblk0p1/frp/frpc"
fi  # 结束第一个 if 条件块

# 条件判断：如果第一个参数是 "start" 或 "restart"
if [ "$1" = "start" -o "$1" = "restart" ]
# 当条件成立时（执行启动或重启操作），启动 frp 客户端
then
    # 输出启动操作的提示信息到控制台
    echo "Starting the frp "
    
    # 使用 nohup 命令在后台启动 frp 客户端
    # nohup 确保程序在用户退出登录后继续运行
    # 完整命令解释：
    # 1. /media/mmcblk0p1/frp/frp_0.64.0_linux_arm/frpc - FRP 客户端可执行文件路径
    # 2. -c /media/mmcblk0p1/frp/frpc.ini - 指定配置文件路径
    # 3. > /media/mmcblk0p1/frp/frpc.log - 将标准输出重定向到日志文件
    # 4. 2>&1 - 将标准错误也重定向到标准输出（即同样写入日志文件）
    # 5. & - 将进程放入后台运行
    nohup /media/mmcblk0p1/frp/frp_0.64.0_linux_arm/frpc -c /media/mmcblk0p1/frp/frpc.ini > /media/mmcblk0p1/frp/frpc.log 2>&1 &
fi  # 结束第二个 if 条件块

# 使用说明：
# - 启动服务: ./frp start
# - 停止服务: ./frp stop  
# - 重启服务: ./frp restart
# 注意事项：
# - 脚本假设 FRP 客户端安装在 /media/mmcblk0p1/frp/frp_0.64.0_linux_arm/ 目录下
# - 配置文件位于 /media/mmcblk0p1/frp/frpc.ini
# - 日志文件输出到 /media/mmcblk0p1/frp/frpc.log
# - 执行脚本前请确保有执行权限（chmod +x frp）
